package main

import "fmt"

func main() {
	// 声明数组时必须指定长度
	var arr1 [5]int = [5]int{1, 2, 3, 4, 5}
	// 不同长度的数组属于不同类型 不能用 == 比较
	//var arr2 [4]int = [4]int{1, 2, 3, 4}
	//if arr1 == arr2 {
	//	fmt.Println("arr1 == arr2")
	//}

	// 声明切片不需要指明长度
	slice1 := []int{1, 2, 3, 4, 5}

	// 数组赋值时会复制整个数组
	arr2 := arr1
	arr2[0] = 100
	fmt.Println("修改后的数组 arr:", arr1)  // arr1 不变
	fmt.Println("修改后的数组 arr2:", arr2) // arr2 被修改

	// 切片赋值只会复制引用，两个切片共享底层数组
	slice2 := slice1
	slice2[0] = 100
	fmt.Println("修改后的切片 slice:", slice1) // slice 也被修改
	fmt.Println("修改后的切片 slice2:", slice2)
	// 切片不能直接用 == 比较 可以和 nil 比较
	//if slice1 == slice2 {
	//
	//}
	if slice1 == nil {
		fmt.Println("empty")
	}
}
